from penguin import auto, logging
from uiautomation import Control, ListControl

class ListUtils:

    @staticmethod
    def show_item_in_list(list:ListControl, item:Control)-> bool:
        """
        将列表项控件（item）在列表控件（list）中完整显示。

        参数：
            list 可滚动的列表控件。
            item 列表控件中的列表项控件。
        返回：
            成功显示返回True，否则返回False。
        """
        if list != None and item != None:
            y = list.BoundingRectangle.top
            y1 = item.BoundingRectangle.top
            if(y1 < y):
                auto.MoveTo(list.BoundingRectangle.xcenter(), list.BoundingRectangle.ycenter())
                # 如果选项没显示在列表上，向上滚动直到选项显示在列表上。
                while y1 < y:
                    auto.WheelUp()
                    y1 = item.BoundingRectangle.top
                    logging.info('在 微信主窗口 搜索结果列表上滚动至坐标 %d 。' % y1)
            return True
        else:
            logging.error('搜索结果列表或者结果项为空引用。')
            return False